package org.data.collection.tree.basic.interfaces;

/**
 * 树-数据结构统一接口
 *
 * @author LiKun
 * @date 2021/11/22 19:23
 */
public interface Tree<K, V> {
    /**
     * 获取当前数据的节点个数
     *
     * @return 节点个数
     */
    int getSize();

    /**
     * 获取根节点 Key 值
     *
     * @return 根节点 Key
     */
    K getRootKey();

    /**
     * 获取根节点 Value 值
     *
     * @return 根节点 Value
     */
    V getRootValue();

    /**
     * 根据 Key 获取对应的 Value 值
     *
     * @param key Key值
     *
     * @return 对应的 Value
     */
    V get(K key);

    /**
     * 设置 Key 的值为 Value
     *
     * @param key   Key值
     * @param value Value值
     *
     * @return 之前的 Value
     */
    V setValue(K key, V value);

    /**
     * 向树中放入新的节点
     *
     * @param key   Key值
     * @param value Value值
     *
     * @return 操作结果
     */
    boolean put(K key, V value);
}
